import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
 * DateFormat 是日期/时间格式化子类的抽象类
 *作用：
 *   格式化（也就是日期 -> 文本）、解析（文本-> 日期）
 * 成员方法：
 *    String	format(Date date)       将一个 Date 格式化为日期/时间字符串。
 *    Date	parse(String source)    从给定字符串的开始解析文本，以生成一个日期。
 *DateFormat是一个抽象类，无法直接使用，可以使用其子类
 *   SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的实现类
 *       构造方法：
 *           SimpleDateFormat(String pattern)   用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
 *        形式参数：
 *               String pattern传递指定的模式
 *       模式：区分大小写 模式中的字母不能更改，连接模式的符号可以改
 *       y       年
 *       M       月
 *       d       日
 *       H       时
 *       m       分
 *       s       秒
 *
 * */
public class DateFormat01 {
    public static void main(String[] args) throws ParseException {
        method01();
        methos02();

    }

    //使用dateformat将日期格式化为文本
    public static void method01() {
        //创建时间对象，作为值传递进simpledateformat方法
        Date date = new Date();
        System.out.println(date);
        //创建对象，将格式作为参数传递进构造方法
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");

        String text = simpleDateFormat1.format(date);
        String text2 = simpleDateFormat2.format(date);
        System.out.println(text2);
        System.out.println(text);
    }

    //使用dataformat中的parse，将文本解析成日期
    /*
     * 注意：
     *        public Date parse(String source) throws ParseException
     *           这个方法声明了一个异常叫做ParseException 解析异常
     *           如果字符串和构造方法中的模式不一样，那么程序就会抛出此异常
     *           调用一个抛出异常的方法，就必须处理这个异常，要么throw继续声明抛出这个异常，要么try ... catch自己处理这个异常
     * */
    public static void methos02() throws ParseException {
        //创建simpledateformat对象,并将文本日期传递进去
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //调用parse方法，将字符串解析成日期
        Date date = simpleDateFormat.parse("2020-03-19 15:22:15");
        System.out.println(date);
    }

}
